/*
	*  缓存api数据
*/

// 当请求接口时，首先在缓存中查找是否存在该接口的数据，如果当前缓存内不存在接口的数据，就去请求接口
// 需要注意的是，数据存在缓存内需要设置超时时间，如果超时的话，需要去请求接口的数据，并且替换掉缓存内的数据
// 缓存 => 新增缓存， 删除缓存 
// 接口类 =》 请求数据
// 控制类 =》 判断数据是否存在 

/*
	 *  @params:
	 *  description: api cache
*/
export class ApiCache {
	constructor(timeout) {
		this.cache = new Map()
		this.timeout = timeout
	}
	
	isOverTime(api) {
		const data = this.cache.get(api)
		if(!data) return true    
		
		const currentTime = (new Date()).getTime()
		
		const overTime = currentTime - data.cacheTime
		
		if(Math.abs(overTime) > this.timeout) return true
		
		return false
	}
	
	getCache(api) {
		let cache = this.cache.get(api).data
		if (cache && !this.isOverTime(api)) {
			console.log('接口内存在存在当前的缓存并且未超时');
			return this.cache.get(api)
		} else {
			console.log('接口缓存不存在，后去需要更新');
			return 101 
			// 101 代表需要请求新数据
		}
	}
	
	addCache(api, data) {
		this.cache.set(api, data)
		return data
	}
	
	deleteCache(api) {
		this.cache.delete(api)
	}
}